Apparatus, system, and method for automated generation of a virtual environment for software applications

ABSTRACT

An apparatus, system, and method are disclosed for generating a reproducible virtual environment in a computer software program. This invention describes a method of generating a realistic virtual environment dependent on a sequence of pseudo-random numbers generated by a pseudo-random number generator initialized by a seed value that may be created by the user. If a user starts with the same initial seed, the same virtual environment is created each time the program is run. However, if a new seed is used, a new virtual environment will be created.

This application claims the benefit of priority of U.S. Provisional Patent Application No. 60/599,715, entitled “APPARATUS, SYSTEM, AND METHOD FOR AUTOMATED GENERATION OF TERRAIN AND COURSE LAYOUT FOR SOFTWARE APPLICATIONS” and filed on Aug. 6, 2004 for Alan Robertson, which is incorporated herein by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates to computer software. Specifically, the invention describes a method for generating realistic virtual environments including spatial layouts and event generation. No two virtual environments are the same unless a user uses the same initial seed.

2. Description of the Related Art

The virtual environment of a software program comprises physical features and temporal events. Conventional video and computer software such as games for racing, sports, mazes, role-playing and adventure games, etc., offer pre-generated courses and terrain layouts. Users can choose and load a desired course from a pre-defined selection. Advantageously, users are able to experience very realistic virtual environments that offer high quality graphics and accurate simulations of real-world environments.

However, virtual environments in software applications have many drawbacks. Pre-generated environments are difficult to design and develop. New or different courses are generally only available by purchasing either expansion packs or new programs. Ultimately, users end up playing the same courses over and over. The user has no control over the available environment.

When playing in on-line tournaments that use pre-generated courses, players more familiar with a course may have an advantage over equally skilled players who have not practiced on the same course. Pre-generated courses often require large amounts of storage. Sharing a new course among several online players may be difficult due to bandwidth limitations. Many virtual environment software applications provide means for an end-user to create courses to be used on the end-user's computer. However, these custom made courses may be time consuming to create, may use large amounts of storage, and may not be sharable among end-users.

Virtual environments may also comprise temporal events. Temporal events such as an oil slick on a race course, a gust of wind during a sailing race, and loss of an engine in a flight simulator/tester, are events which happen at a specific time during execution of a software application. Under some circumstances, it is preferable that temporal events be unpredictable. Events which happen at the same time each time that a software application is run are predictable and will be anticipated by seasoned users of the software. However, it is often desirable that two users competing against each other experience the same temporal events at the same time. In some situations, it is desirable that events appear to be random to the user, yet identical across users competing with each other.

From the foregoing discussion, it should be apparent that a need exists for an apparatus, system, and method that enable computer software to generate a new virtual environment, including terrain layout and temporal events, for each user of the software. A need also exists for an apparatus, system, and method that enable users to engage in on-line tournaments using a randomly generated virtual environment that will be identical for each user. In addition, a need exists for an apparatus, system, and method that enable players to save or repeatedly regenerate an automatically generated virtual environment so that the user can replay the virtual environment at will.

In addition, the timing of the creation of the virtual environment may be a factor. In some situations, it may be useful to generate a virtual environment in real-time. Real-time generation occurs while the user is using the program. Generating an environment in real-time may save both primary and secondary storage space. When using real-time generation, the entire environment does not need to be loaded into memory and the environment does not need to be stored on a hard disk.

In other situations, it may be useful to generate a virtual environment one time and store the environment for later use. This may be especially advantageous in those situations where the generation of the virtual environment involves significant computing resources. Being able to choose between real-time generation and pre-generation of identical environments would give software designers and users more flexibility.

Beneficially, such an apparatus, system, and method would produce a virtual environment comprising pseudo-randomly generated physical features and pseudo-randomly generated temporal events so that users can experience new terrain and course layouts as desired and repeat the same virtual environment as desired. The ability to generate new virtual environments gives users of software new experiences. Such an apparatus, system, and method would give users innumerable opportunities to engage in on-line tournaments in which every player is equally unfamiliar with a terrain and course. Users would also be able to generate a new course or virtual environment when they have memorized and/or become bored with an old course.

SUMMARY OF THE INVENTION

The present invention has been developed in response to the present state of the art, and in particular, in response to the problems and needs in the art that have not yet been fully solved by currently available computer and video games. Accordingly, the present invention has been developed to provide an apparatus, system, and method for generating virtual environments, terrains and courses that overcome many or all of the above-discussed shortcomings in the art.

The method in the disclosed embodiments substantially includes the steps necessary to carry out the functions presented above with respect to the operation of the described apparatus and system. These modules in the described embodiments include modules for determining a seed value; initializing a pseudo-random number generator with the seed value; generating a sequence of pseudo-random numbers with the pseudo-random number generator; creating a virtual environment at least partially dependent on the sequence of pseudo-random numbers and reproducible based on the seed value.

An embodiment of the invention creates a virtual environment for use with a non-exhaustive list of computer-based simulations including a computer-based golf-game, a computer-based baseball game, a computer-based tennis game, a computer-based ice hockey game, a computer-based boxing game, a computer-based chess game, a computer-based horse racing game, a computer-based car racing game, and a computer-based flight simulator.

An embodiment of the invention models the physical features of a virtual environment using a series of geometric shapes. The attributes of the geometric shapes and their location in the virtual environment are at least partially dependent on the sequence of pseudo-random numbers. The geometric shapes may be ellipses, circles, squares, rectangles, trapezoids, triangles, arcs, curves, lines, points, hexagons, or other geometric shapes or a combination of different types of geometric shapes.

The method, in one embodiment, is configured to be run on a computer system. The method is further configured, in one embodiment, to be executed on a video game console such as the Sony Playstation®, the Microsoft X-box®, and the Nintendo Game Cube®, etc. In a further embodiment, the method may be configured to be executed on a portable game system such as the Nintendo Game Boy®, Game Boy Advance®, the Sega Game Gear®, cell phones, and pocket digital assistants, etc. In a further embodiment, the method may be executed on a computer running Microsoft® Windows®, Linux, or other operating systems.

An embodiment of the invention is presented as a signal-bearing medium embodying a program of machine-readable instructions executable by a digital computing device to perform the method of receiving a seed value; initializing a pseudo-random number generator with the seed value; generating a sequence of pseudo-random numbers; and executing a series of software decisions according to the sequences of pseudo-random numbers to create a virtual environment.

A system of the present invention to generate virtual environments is also presented. The system may be embodied in a computing device; a seed reception module; a pseudo-random number generator initialized by the seed value and configured to generate a sequence of pseudo-random numbers; and an environment creation module configured to create a virtual environment dependent upon the sequence of pseudo-random numbers. The virtual environment is reproducible based on the seed value.

Reference throughout this specification to features, advantages, or similar language does not imply that all of the features and advantages that may be realized with the present invention should be or are in any single embodiment of the invention. Rather, language referring to the features and advantages is understood to mean that a specific feature, advantage, or characteristic described in connection with an embodiment is included in at least one embodiment of the present invention. Thus, discussion of the features and advantages, and similar language, throughout this specification may, but do not necessarily, refer to the same embodiment.

Furthermore, the described features, advantages, and characteristics of the invention may be combined in any suitable manner in one or more embodiments. One skilled in the relevant art will recognize that the invention can be practiced without one or more of the specific features or advantages of a particular embodiment. In other instances, additional features and advantages may be recognized in certain embodiments that may not be present in all embodiments of the invention.

These features and advantages of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

In order that the advantages of the invention will be readily understood, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments that are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings, in which:

FIG. 1 is a schematic block diagram illustrating the conventional environmental systems;

FIG. 2 is a block diagram illustrating features of a virtual environment.

FIG. 3 is a schematic block diagram illustrating one embodiment of an apparatus for generating a virtual environment for software applications in real-time in accordance with the present invention; and

FIG. 4 is a schematic flow chart diagram illustrating one embodiment of a method for generating a virtual environment for software applications in real-time in accordance with the present invention.

FIG. 5 is a schematic flow chart diagram illustrating one embodiment of a method for generating a virtual environment for software applications in real-time in accordance with the present invention.

DETAILED DESCRIPTION OF THE INVENTION

Many of the functional units described in this specification have been labeled as modules, in order to more particularly emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like.

Modules may also be implemented in software for execution by various types of processors. An identified module of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.

Indeed, a module of executable code may be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices. Similarly, operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices, and may exist, at least partially, merely as electronic signals on a system or network.

Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.

Furthermore, the described features, structures, or characteristics of the invention may be combined in any suitable manner in one or more embodiments. In the following description, numerous specific details are provided, such as examples of programming, software modules, user selections, network transactions, database queries, database structures, hardware modules, hardware circuits, hardware chips, etc., to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention can be practiced without one or more of the specific details, or with other methods, components, materials, and so forth. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the invention.

The schematic flow chart diagrams included are generally set forth as logical flow chart diagrams. As such, the depicted order and labeled steps are indicative of one embodiment of the presented method. Other steps and methods may be conceived that are equivalent in function, logic, or effect to one or more steps, or portions thereof, of the illustrated method. Additionally, the format and symbols employed are provided to explain the logical steps of the method and are understood not to limit the scope of the method. Although various arrow types and line types may be employed in the flow chart diagrams, they are understood not to limit the scope of the corresponding method. Indeed, some arrows or other connectors may be used to indicate only the logical flow of the method. For instance, an arrow may indicate a waiting or monitoring period of unspecified duration between enumerated steps of the depicted method. Additionally, the order in which a particular method occurs may or may not strictly adhere to the order of the corresponding steps shown.

FIG. 1 depicts a schematic block diagram illustrating conventional software for providing virtual environments in software applications. Software application 101 uses an input device 102, for example a keyboard, and an output device 100, for example a monitor, to interact with a user. Other input devices 102 may include joysticks, game pads, a computer mouse, touch pads, position-sensing gloves, network adapters, or other means for the computing device to receive external input. Output devices 100 may also include printers, network adapters, three-dimensional goggles, and other means for the computing device to relay output to the user. An input/output module 103 handles communications between an input device 102, the software application, and an output device 100.

Computer software applications also commonly include a number of engines that are functional components that serve particular purposes to create, generate, maintain, or display an environment for the software application 101. A graphics engine 104 may generate and manage graphics. An audio engine 106 may provide and manage sounds such as a theme, background, and/or vocal sounds required in the software application 101, such as a game. A physics engine 108 may contain the algorithms required to control the rules for how components in the environment react and interact with various other components in the environment. A character model 110 may generate and manage characters and other animate and/or inanimate objects in the virtual environment.

Some software programs may also include a terrain model 112. The terrain model 112 may manage a model for the environment in the software application such as a computer game. Generally, the terrain model 112 accesses a stored database 114 of pre-generated terrains. The terrains may be further subdivided into courses, levels, views, and the like. So, for example, when a game level changes or a player desires a new terrain or course, the terrain model 112 retrieves a new terrain stored in the terrain database 108. Typically, the terrain defines the major boundaries and characteristics of an environment being used within the software application. In some programs a user may edit or generate terrain and course layouts using an editor that separately accesses the terrain database 114. Consequently, the user is able to use the pre-defined terrains in the software application, for example, when a game is played. However, these terrains are not generated dynamically when a game is played and are not generated to include randomly placed major topographic features and/or randomly placed application-specific features (discussed in more detail below).

FIG. 2 depicts a schematic block diagram illustrating one embodiment of an apparatus 200 for automated generation of a virtual environment 150 including physical features and temporal events. The apparatus 200 includes some of the same components as those illustrated and discussed in relation to FIG. 1. For example, the apparatus 200 preferably includes an output device 100, an input device 102, and a software application 201 comprising an input/output module 103, a graphics engine 104, an audio engine 106, a physics engine 108, a character model 110, and a terrain model 112.

In contrast to a conventional software application illustrated in FIG. 1, the present invention includes a physical features engine 202 and an events engine 206. One embodiment also includes an environment rules module 220.

FIG. 3 illustrates one embodiment of a virtual environment 150. The Virtual Environment 150 comprises physical features 160 and temporal events 170. As used herein, “physical features” refers to any physical objects present within the virtual environment, both animate and inanimate. As examples, a physical feature 160 may be a mountain, a stream, a building, a car, a tree, a leaf, a golf ball, or a cloud. Some physical features 160 remain stationary throughout the course of a software program while others may move. Among those that may move, some move in response to the movement of other objects and forces, for example a golf ball responding to the swing of a club and then reacting to air, wind, gravity, and grass. Other objects may move of their own volition, for example a golfer, or a pelican. The golfer may be controlled by the user while the pelican may be controlled by the software.

The physical features 160 make up the spatial layout of the virtual environment and may be divided into two major groups, though the distinction may blur: topographic features 162 and application-specific features 164. Topographic features 162 generally refer to physical features which form parts of the landscape including mountains, streams, and buildings. Application-specific features 164 generally comprise features that relate directly to an application's field of play. A tee on a golf course, a race track in a computer-based race game, and a runway in a flight simulator are examples of application-specific features 164. However, many physical features 160 could be classed as both topographic features 162 and application-specific features 164.

Temporal events 170 are changes to the virtual environment which occur after the initiation of the virtual environment. Examples of temporal events include gusts of wind, an earthquake, or the decision of an otherwise docile pelican to scoop up a golf ball from a fairway and deposit the golf ball in a pond. Most temporal events 170 appear to occur randomly. In reality, events in a software application are not random, but are pseudo-random, meaning that they are predictable given an understanding of the algorithms utilized by the software and knowledge of the program inputs. However, from the standpoint of the program user, such events may appear unpredictable and unanticipated.

Unanticipated events are temporal events which are substantially unpredictable to the user of the software application 101. It is sometimes difficult to differentiate between physical features 160 and temporal events 170 as they tend to affect each other. An earthquake, which is clearly a temporal event, may change the size and shape of a mountain, which is clearly a physical feature. The size and shapes of buildings may affect wind speed near the buildings. The distinction is made here because the invention relates to the placement of physical features and the number, timing, and duration of temporal events in a virtual environment 150.

Referring now back to FIG. 2, the physical features engine 202 is configured to automatically generate physical features 160 of a virtual environment 150 for a software application 201 such as a computer game. Of course the software application 201 may comprise a variety of software types including video games, landscape-design software, and any other software that uses a three-dimensional world such as for cinematography and the like.

Preferably, the physical features engine 202 is configured to generate the physical features in a pseudo-random manner. A pseudo-random number generator 210 is initialized with an initial seed value 212. The initial seed value 212 may be directly entered by the user or may be derived from user input such as a filename, game name, or other identifier. The pseudo-random number generator 210 then generates a sequence of pseudo-random numbers 211 to be used by the software. The sequence of pseudo-random numbers 211 may comprise a single number or a plurality of numbers. The sequence 211 may be generated in response to a single request or to a series of requests.

The physical features engine 202 generates and places a plurality of physical features 160 within a virtual environment 150 that represents the “world” or “environment” for the software application 201. The physical features 160 may include topographic features 162 such as mountains, hills, rivers, streams, oceans, lakes, cliffs, plateaus, ravines, and the like. The physical features engine 202 places the topographic features 162 such that the contour and topography of one topographic feature 162 realistically blends with the contour and topography of adjacent topographic features 162. The choice of topographic features 162, their size and placement is preferably dependent on the sequence of pseudo-random numbers 211.

Other physical features 160 may include application-specific features 164 which define certain physical characteristics of the generated virtual environment 150 that relate directly to the application that will operate using the virtual environment 150. Examples of application-specific features 164 are as varied as the types of software that may make use of the generated environment. For example, in a golf game, application-specific features 164 may include holes for a particular golf course. In an adventure role-playing game, application-specific features 164 may include a yellow-brick road down which characters in the game travel. Those of skill in the art will readily recognize a number of different software applications including simulations and games that comprise a variety of application-specific features which a physical features engine 202 can place. Again, the physical features engine 202, in choosing the attributes of the application features 164 preferably uses the sequence of pseudo-random numbers to determine placement and attributes.

Preferably, the physical features engine 202 uses the sequence of pseudo-random numbers 211 to determine how many and what type of physical feature 160, including application-specific features 164, to include in the generated virtual environment 150. Certain determinations may be predefined or defined by a user. For example, in a golf course game a user may define how many holes the physical features engine 202 is to generate. Other determinations may be made based on environment rules 220.

The environment rules 220 define bounds for acceptable values for an acceptable virtual environment 150. For example, one rule may state that once a topographic feature 162 is placed, no other topographic features may be placed in the same location. Other rules may govern placement of application-specific features 164 to ensure that application-specific features 164 are logically connected and placed. For example, one rule may prevent placement of a walkway in the middle of a lake. Another rule may require that the tee for each successive hole in a golf game be placed near the green for the prior hole. Alternatively, all the determinations associated with application-specific features 164 are determined using the sequence of pseudo-random numbers 211.

The structure of a software application 201 may be defined by the environment rules 220. Some applications may contain logic to generate an entire simulation with occasional reliance on the sequence of pseudo-random numbers 211. For example, a flight simulator may construct a course that includes runways, landing conflicts with other airplanes, wind gusts and so forth. Certain decisions may be determined by the environment rules 220. In addition, the sequence of pseudo-random numbers 211 may be used to make decisions about the location of the runway, the timing of landing conflicts and the intensity and direction of wind gusts. The environment rules 220 may provide a reality check to ensure that the automatically generated virtual environment 150 is appropriately constructed.

Preferably, the terrain model 112 cooperates with the physical features engine 202 to generate and maintain the physical features such that a database 114 or other repository of pre-generated terrains is not needed. However, in some embodiments, pre-generated terrain may be used in combination with physical features 160 generated with the assistance of the sequence of pseudo-random numbers 211.

In a similar manner, in some software applications 201, an events engine 206 generates a series of temporal events 170 to be injected into the virtual environment 150 at specific times. The attributes and timing of each temporal event 170 preferably also depends on the sequence of pseudo-random numbers 211 generated by the pseudo-random number generator 210.

The resultant virtual environment of physical features 160 and temporal events 170 is dependent on the sequence of pseudo-random numbers 211 which is in turn dependent on the initial seed value 212. This means that given a certain initial seed value 212, the physical features engine 202 and the events engine 206 produce a virtual environment of physical features and temporal events with exactly the same characteristics each time that the program is executed. For equivalent initial seed values, the position and elevation for various terrain elements such as mountains, hills, rivers, streams, oceans, lakes, cliffs, plateaus, ravines, and the like are the same. In addition, the timing and attributes of temporal events are also the same. Consequently, the virtual environment is reproducible.

Certain embodiments may use the pseudo-random number generator 210 to make substantially all decisions regarding generation of physical features. Alternative embodiments may, as mentioned earlier, include environment rules 220 which affect software decisions such as the number, type, and placement of physical and/or application specific features.

By using a pseudo-random number generator 210, the present invention produces a unique virtual environment 150 each time the physical features engine 202 are executed with a different seed. Those of skill in the art will recognize that a variety of pseudo-random number generators 210 may be used. However, the pseudo-random number generator 210 produces a sequence of pseudo-random numbers 211 that is based on an initial seed value 212 used to initialize the pseudo-random number generator 210. If the initial seed value 212 is selected in an unpredictable manner and the pseudo-random number generator 210 reinitialized after each use, the results of the random number generator 210 are highly random and unpredictable. However, if a single initial seed value 212 is used and the pseudo-random number generator 210 is not reinitialized prior to each request for a pseudo-random number or sequence of pseudo-random numbers 211, the pseudo-random number generator 210 will provide the same sequence of pseudo-random numbers 211.

Certain embodiments may initialize the pseudo-random number generator 210 and then call the pseudo-random number generator 210 to make software decisions for use in generating the virtual environment. In this manner, if the same seed is used to initialize the pseudo-random number generator 210 and the initialized pseudo-random number generator 210 is used throughout the virtual environment generation process, the same virtual environment will be produced, including physical features and temporal events.

In certain embodiments, the initial seed value is provided by the user. In this manner, for each new seed, a unique virtual environment is produced. In addition, if the user provides the same seed, the same virtual environment is regenerated automatically. Of course, other embodiments may store the information needed to recreate a previously generated virtual environment without re-executing the physical features engine 202 or the events engine 206. For example, data points and/or formulas used in the terrain models 112 may be stored such that re-creation of previously automatically generated physical features is made more efficient.

Those of skill in the art will understand that in certain applications, providing a new seed will not always generate a unique environment. For instance, if the domain for the sequence of pseudo-random numbers is kept relatively small, the same sequence could be reproduced using different seeds. However, the predictability of the present invention ensures that two separate executions of the software application 101, using the same initial seed value 212, will produce exactly the same virtual environment 150.

For example, suppose the software application is a high-low number guessing game. Further, suppose that the initial seed value 212 is two. The software application 101 will use the pseudo-random number generator 210 to always select the same target number for the game, for example twelve, even though a seed value of eight also results in a target value of twelve. Advantageously, in a software application such as a game with a much larger domain, the same seed will always produce the same virtual environment 150.

In accordance with the present invention, FIG. 4 is a schematic flow chart diagram illustrating one embodiment of a method 400 for generating a virtual environment 150 starting with an initial seed value 212. The method 400 comprises generating a sequence of pseudo-random numbers 403, generating a series of geometric shapes in a manner dependent on the sequence of pseudo-random numbers 405, and positioning each geometric shape 407 to create a virtual environment 409.

Many means may be used to determine 401 the initial seed value. In one embodiment, the user enters the initial seed value directly. In another embodiment, the initial seed value is derived from a name chosen by the user to be associated with the virtual environment 150. Other means known to those of skill in the art could also be used to determine 401 the initial seed value.

Generating 403 a sequence of pseudo-random numbers comprises initializing a pseudo-random number generator 210 with the initial seed value 212 and requesting pseudo-random numbers from the generator 210. The sequence of pseudo-random numbers 211 may comprise a single pseudo-random number or a plurality of pseudo-random numbers.

Creating the virtual environment 150 is accomplished by executing a series of software decisions. The software decisions may be defined by the environment rules 220 in conjunction with other software logic. The software decisions may create a set of physical features 160 and temporal events 170 which comprise the virtual environment 150. The software decisions, which may be represented by software code, may comprise the major structure for the software application 201. In fact, the software decisions may almost completely create the virtual environment 150 by relying on the sequence of pseudo-random numbers 211. Alternatively, the final virtual environment 150 may relay partially on the generated sequence of pseudo-random numbers 211.

The software application 201 executes the software decisions in order each time the software application 201 is executed. Because certain software decisions are programmed to use the sequence of pseudo-random numbers 211, repeated execution of the software application 201 produces the same virtual environment 150.

In one embodiment, the series of software decisions comprises generating 405 a series of geometric shapes dependent on the sequence of pseudo-random numbers 211. The shapes may be any geometric shape or a combination of any type of geometric shapes. The number, size, shape, type, color, and other attributes of the geometric shapes may be dependent on the sequence of pseudo-random numbers 211.

The geometric shapes are positioned 407 in the virtual environment. Placing and orienting each shape may be at least partially dependent on the sequence of pseudo-random numbers 211. The shapes may define topographic features 160 and application-specific features 164. The arrangement of the shapes may also be partially dependent on environment rules 220.

The final result is a virtual environment 409 which is dependent on the sequence of pseudo-random numbers 211 and ultimately on the initial seed value 401. The generated virtual environment 409 is reproducible given the same input seed 401.

In accordance with the present invention, FIG. 5 is a schematic flow chart diagram illustrating one embodiment of a method 500 for generating a virtual environment 150 comprising physical features 160 and temporal events 170.

One embodiment creates a virtual environment 150 for use with a software application 201. The software application may be a computer-based simulation. Examples of computer-based simulations that could be implemented as embodiments of the invention include a computer-based golf-game, a computer-based baseball game, a computer-based tennis game, a computer-based ice hockey game, a computer-based boxing game, a computer-based chess game, a computer-based horse racing game, a computer-based car racing game, and a computer-based flight simulator.

The embodiment in FIG. 5 may utilize ellipses and curves to build the physical features of the virtual environment. Other embodiments may use any geometric figure including ellipses, triangles, trapezoids, rectangles, circles, squares, open curves, closed curves, lines, points, hexagons, pentagons, dodecahedrons, or any other geometric shapes. Certain embodiments also may be implemented using combinations of different types of geometric shapes.

First, an initial seed value 212 is provided 501 using the input/output module 103 (See FIGS. 1-3 for number labels that do not begin with a ‘5’). Typically, a user enters data using the keyboard 102, a mouse movement, mouse or other input button clicks, or any repeatable form of user input. This data is used to derive an initial seed value 212.

Next, the pseudo-random number generator 210 is initialized 503 using the initial seed value 212. The pseudo-random number generator 210 is used to generate a sequence of pseudo-random numbers 211 either in a batch or as needed. Because the initial seed value 212 is preferably provided by a user of the software application, the user can reproduce the virtual environment 150 later by reentering the same initial seed value 212. In one embodiment, the initial seed value 212 is generated by converting a name for the virtual environment provided by the user into a numeric representation. For example, the application may request that the user provide a filename for storing the environment and use the filename itself as the initial seed value 212 or as a means for deriving the initial seed value 212.

FIG. 5 illustrates that most modules in certain embodiments use the pseudo-random number generator 210 to provide quantities and make determinations. Those of skill in the art will recognize that a pseudo-random number generator 210 can be used to make Boolean determinations simply by providing a suitable range within which the random number result provided should be kept. For example, many pseudo-random number generators provide output decimal values greater than or equal to 0.0 and less than 1.0. Since a Boolean range includes two whole numbers, the output from the pseudo-random number generator may be multiplied by two and then the decimal portion may be truncated. By doing this, pseudo-random integer values in the range from 0 to 1 inclusive are returned. Those of skill in the art will recognize this method as well as other methods that could be used to limit the range of outputs according to the needs of the software design.

Next, area boundaries are defined 505. The area boundaries for the virtual environment 150 in one embodiment is defined on a Cartesian X,Y axis centered at (0,0). Typically, the boundaries are determined by the maximum and minimum value for representable numbers in the computer that will execute the software. So, in one typical embodiment, the X and Y values can range from integer values between −32767 to +32767. However, a virtual environment 150 may cover a smaller area than this range, depending on the value given by the pseudo-random number generator 210. The present invention may contain control functions that prevent the area from being too small. These control functions may be defined in the environment rules 220 described earlier.

The physical features 160 of the two dimensional virtual environment for the software application may be based on ellipse and curve geometry. In one embodiment, a base surface is initially generated by defining a series of shapes within the two-dimension X, Y coordinate system. In one embodiment, the shapes comprise a plurality of ellipses and curves. Preferably, the location, size, and configuration of the shapes are determined using the sequence of pseudo-random numbers 211 provided by the pseudo-random number generator 210.

The ellipses and curves are placed 507 to provide an initial set of physical features 160 which may define a base surface with which to work. Placement of the ellipses and curves is at least partially dependent on the sequence of pseudo-random numbers 211. The base surface may comprise many topographic features 162. By analogy, generating the base surface is much like locating a parcel of land to build on. The chosen land may have large features that need to either be incorporated into the desired terrain, or worked around. Similarly, placing large ellipses randomly on the surface to define large hills or even mountains, and crevices or valleys, and curves to define cliffs, provides a starting point from which to work.

One embodiment uses a feature of ellipses and curves to produce the third dimension, height, for the terrain as well as the type of terrain at a given point. As will be explained below, three-dimensional points in the virtual environment 150 are influenced by the plurality of ellipses and curves that form the base surface. The influence of these ellipses and curves determine how hilly or smooth the terrain. The random placement, sizes, and numbers of ellipses and curves also produce a “natural” looking terrain.

The configuration and definition of this base surface affects how the virtual environment 150 is viewed and/or interacted with during operation of the software to conduct, for example, a video game. Specifically, the base surface may be used to determine the height of pixels on a screen when painting a view of the terrain and/or course layout. Similarly, the base surface may be used to determine the height and behavior of modeled, application specific features in the application, such as a ball or character in relation to the terrain and possibly physics models.

In other embodiments, the base surface is used to generate rough, general topographic features 162 upon which application features 164 are generated for use in the software, such as for game play. The application features 164 may comprise a course layout which may replace the base surface for purposes of graphical renderings and distance calculations in the virtual environment. In this instance, additional ellipses and curves are added using the base surface to determine the height of the additional ellipses. These ellipses are more precise and allow for further refinement of the surface. This would be akin to starting with a plot of land, but then using machinery to level and contour some areas to make them more suitable for their intended use. These additional ellipses may more precisely define the surface type as well.

Preferably, the pseudo-random number generator 210 controls how many ellipses and curves to place and where to place them by giving X, Y coordinates that are not too far apart. Preferably, a minimum number of ellipses are placed such that the surface is not flat. More ellipses create topographic features 162 with more hills. Fewer ellipses create topographic features 162 with a flatter topography.

Placement of ellipses 507 to define the base surface may use the ellipse formula: Ax² +Bx² +Cxy+Dx+Ex+F=0. The pseudo-random number generator 210 provides points to define the ellipse such as the position of the ellipse, the length, the width, the orientation, and the height, or Z value of the ellipse (also denoted as ZValueOfEllipse). The formula can be modified to give a factor representative of the influence that one ellipse has on the height of any X,Y point as: factor=Ax² +Bx² +Cxy+Dx+Ex+F. The entire formula can also be scaled such that the position of the ellipse does not change on the X,Y surface, but the value returned by the formula is modified, or scaled. Since this factor is then passed into the formula: height=arctangent(factor)*ZValueOfEllipse, the speed at which the height increases is also changed, creating either a gradual incline, or a steep incline. This would create a hill, either very gradual, or very steep, or anywhere in-between. If the ellipse's height or Z value is negative, the hill becomes a hole.

Not all topographic features 162 may be definable using ellipses. Ellipses may be too symmetrical for features such as cliffs, which require a geometric element that allows for asymmetry. Features, such as cliffs, may be formed by a list of curves that defines the cliff perimeter. The curve allows one side of the cliff to be higher than the other. There are also other formulas that may be used to define a shape and affect topography. A rectangle may be used to define a shed or building, or may be grouped together with other rectangles for a more complicated building. A line segment or series of line segments may be used to define a wall or hedge.

In order to create a realistic terrain, the pseudo-random number generator 210 is used to determine a height for the ellipse and/or curve. The height value and distance may then be used in interacting with the virtual environment 150 to determine the height of certain features when the virtual environment 150 is interacted with, for example, during game play.

Using the formula for an ellipse and a curve, the present invention creates a plurality of ellipses and curves to define the base surface. In one embodiment, a physical features engine 202 uses input from the sequence of pseudo-random numbers 211 to generate two foci points, a width, and a height to define a first ellipse. Next, again using the sequence of pseudo-random numbers 211, a second set of foci points, width, and height are generated. Again, using input from the sequence of pseudo-random numbers, a determination is made whether the first ellipse is connected by a common major axis point or not. Similarly, points defining a curve such as a B-Spline curve and the height are also generated.

In one embodiment, the points and attributes defining the ellipses and curves are stored in linked lists. Of course, other data structures may be used. Attributes may include height, slope, and the like. The height may be a relative height, relative to first ellipse or an absolute height in relation to the coordinate system. Alternatively, formulas and required variable values for the formulas are stored in the linked lists. The heights and slopes of the ellipses and curves may be stored in the linked lists.

Preferably, the base surface is represented by formulas and attributes and provides a framework within which the physical features will be defined. Although, the ellipses and curves are placed at random positions in X, Y space, a three-dimensional physical model or terrain is provided by placing pixels and physical features according to the influence of the shapes of the base surface.

After the base surface is defined, physical features engine 202 uses input from the sequence of pseudo-random numbers to define and place 509 topographic features such as cliffs, plateaus, buildings, lakes, streams, etc. Topographic features 160 preferably comprise features that are inanimate and present an obstacle interaction with the terrain or spatial layout of the virtual environment. Preferably, the topographic features 160 are also represented by groups of randomly generated and placed ellipses and curves. The topographic features may be placed 305 using substantially the same formulas as described above.

After the topographic features are defined and placed, the physical features engine 202 uses the sequence of pseudo-random numbers to define and place 511 the application-specific features 164 such as race-courses, roads, paths, walkways, mazes, sand traps, grass traps, booby traps, holes, etc. Alternatively, features specific to a particular software application, such as landscape design, may be placed using some initial parameters provided by a user.

In one particular embodiment, the topographic features are for a golf course for a golf game. Consequently, the application-specific features include features such as holes of the course, tee boxes, fairway, greens, roughs, and the like. In one embodiment, features such as holes are generated and placed using algorithms that generate realistic holes organized according to certain rules described earlier as environment rules 220. Examples of environment rules 220 for a golf game, for example, include the 9^(th) and 18^(th) holes end near the “club house” and/or each hole starts near the green of the previous hole. Those of skill in the art will recognize that the application-specific features will vary depending on the type of application software that will use the virtual environment.

The application-specific features are also preferably represented by different types of ellipses. For example, a certain number of ellipses may be grouped to define a green, a rough, a fairway, a tee box, and the like. Preferably, these ellipses are defined in relation to the ellipses and curves of the base surface. Heights for these ellipses may be relative to the base or absolute in relation to the coordinate system. The ellipses are defined using the same formulas and environment rules 220 to ensure that application specific features are not placed too closely to each other.

Once the application specific features and terrain specific features are defined, the physical features engine 202 may discard the base surface. The groups of different types of ellipses and curves represented by formulas and the associated attributes are stored for use during program execution. The ellipses are typically organized by types which represent the type of features in the virtual environment.

During the course of program execution, the program may schedule 513 temporal events. Software decisions regarding the timing and attributes of temporal events are dependent on the sequence of pseudo-random numbers 211 generated by the pseudo-random number generator 210. Some temporal events may be scheduled at the time of program initialization while others may be scheduled in response to interactions between the application and the user.

As an example, an adventure game may schedule an earthquake of magnitude eight to occur five minutes into program execution. The timing of the earthquake and the magnitude of the earthquake may be dependent on the sequence of pseudo-random numbers 211. However, certain parameters comprised within the environment rules 220 may establish boundaries. For instance, an environment rule preventing earthquakes from occurring in the first seven minutes of play may also play into the scheduling decision.

During program execution the virtual environment is interacted with both to display a certain 3D camera view and move characters and/or objects within the virtual environment 150. In one embodiment, the groups of different types of ellipses, referred to herein as “ellipse data sets”, are used to determine how each pixel of the virtual environment 150 is presented, or graphically rendered 515.

For example, in one embodiment, if the view of the terrain and course layout is to be displayed, the physical features engine 202 iteratively processes each point in a triangular grid representing the displayable surface. Each point of the triangular grid is analyzed in relation to the influence of the ellipse data sets, creating a series of connected triangles in space. The analysis determines what the height value is for each point in the triangular grid. In one embodiment, this height analysis includes the effect of each ellipse or curve generated using the base surface. Given the X, Y values and the computed Z or height values, the triangular grid is then rendered 515 to the screen through a general 3D projection formula, creating the effect of a ground surface.

Preferably, for a given X, Y point, a first ellipse in the ellipse data set is selected. Next, a formula for an ellipse is used to determine a factor representative of the influence of the ellipse on the point. In one embodiment, the factor is calculated using a modified form of the ellipse formula: factor=Ax² +Bx² +Cxy+Dx+Ex+F. This factor is then entered into the following height formula: height=((π/2)−a tan(factor))*HeightValueOfEllipseOrCurve where HeightValueOfEllipseOrCurve is the predetermined height of the selected ellipse. Alternatively, the second height formula may comprise height=Arctangent(factor)*HeightValueOfEllipseOrCurve. Those of skill in the art will recognize that these formulas may be modified within the scope of the present invention.

As discussed earlier, for a given point, X, Y, the ellipse formula will return a factor representative of the influence that the ellipse's height has on the point. This factor is then passed into the height formula to obtain the Z value, or height of the surface at the given X, Y point. If the scale of the ellipse is such that the slope of the surface due to the ellipse is gradual, the scaled distance will be less than actual distance, and the height will change gradually as points nearer to the ellipse are evaluated. If the scale of the ellipse is such that the slope of the surface due to the ellipse is steep, the distance is exaggerated, and the height will change drastically as points nearer to the ellipse are evaluated. In either case, the height returned by the height formula will near a maximum and a minimum. If the first height formula is used, the minimum will near zero as the distance from the ellipse is increased, and will near the height of the ellipse as the point nears the center of the ellipse. If the second height formula is used, the maximum and minimum will near the EllipseHeight*PI/2 and—EllipseHeight*PI/2, respectively.

The height formula determines a height which represents the height influence of the selected ellipse on the selected point. This height is then stored. For a given point the process is then repeated until a height influence from each ellipse in the ellipse data set is calculated. The height influences are then combined according to the type of ellipses in the ellipse data set. So, for one ellipse type, the height influences may be averaged, for another ellipse type the height influences may be summed together, and for other ellipse types, other forms of combining the values may be used.

In summary, the present invention provides a virtual environment 517, 150 for a software application such as a game or a computer simulation. The physical features and temporal events are realistic and suitable for use as a simulated environment. The virtual environment may be dynamically generated in real-time to allow the course of user interaction to affect the virtual environment. The virtual environment may also be created to a large extent prior to user interaction.

The virtual environment is generated based on the initial seed value provided to the pseudo-random number generator. Each time a unique initial seed value is provided, a unique virtual environment is created. Each time that a previously used initial seed value is provided, the same virtual environment is generated. In this way, the invention creates a virtual environment that can be utilized as desired without the user relying on pre-generated courses provided by the software designer. The virtual environment is randomly generated such that a user can experience a very unique virtual environment each time the program is executed. In the case of a game application, the unique virtual environment can be used in an online tournament format to ensure that all players have an equal familiarity with the course.

There is no requirement that further course and terrain designs be purchased or developed for the application. Alternatively, a user can run the program with the same virtual environment simply by providing the same seed. In one embodiment, the seed is derived from the name of the course provided by the user. The virtual environment is dynamic and used interactively during game play to change camera view and track objects and/or characters within the virtual environment.

The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope. 

1. A method for generating a reproducible pseudo-random virtual environment in a computer software program, the method comprising: determining a seed value; initializing a pseudo-random number generator with the seed value; generating a sequence of pseudo-random numbers using the pseudo-random number generator previously initialized with the seed value, the sequence comprising at least one pseudo-random number; executing a series of software decisions to create a virtual environment, the outcome of at least one of the decisions dependent upon the sequence of pseudo-random numbers; and wherein the virtual environment is reproducible based on the seed value.
 2. The method of claim 1, wherein the virtual environment comprises a spatial layout.
 3. The method of claim 2, further comprising placing physical features into the spatial layout based on the sequence of pseudo-random numbers.
 4. The method of claim 3, wherein the physical features relate to a computer-based simulation selected from the group of computer-based simulations consisting of a computer-based golf game, a computer-based baseball game, a computer-based tennis game, a computer-based ice hockey game, a computer-based boxing game, a computer-based chess game, a computer-based horse racing game, a computer-based car racing game, and a computer-based flight simulator which tests the flight skills of pilots.
 5. The method of claim 1, wherein the virtual environment comprises a series of unanticipated events, wherein the unanticipated events are computer generated events dependent on the sequence of pseudo-random numbers.
 6. The method of claim 5, wherein the seed value comprises a filename associated with the virtual environment.
 7. The method of claim 2, wherein executing a series of software decisions to create a virtual environment comprises: generating a series of geometric shapes having dimensions dependent on the sequence of pseudo-random numbers; and positioning each geometric shape within the series of geometric shapes based on the sequence of pseudo-random numbers.
 8. The method of claim 7, wherein shapes within the series of geometric shapes are selected from the group consisting of ellipses, circles, squares, rectangles, trapezoids, triangles, arcs, curves, lines, points, and hexagons.
 9. The method of claim 7, wherein the virtual environment is mapped using x, y, and z coordinates and wherein positioning each geometric shape comprises: selecting x-y planar coordinates for the geometric shape; and selecting the z coordinate of the geometric shape, wherein the z coordinate defines the height of the shape in the virtual environment, wherein selecting the coordinates for the geometric shape is dependent on the sequence of pseudo-random numbers.
 10. The method of claim 9, further comprising: calculating the height of a point in the virtual environment proximate to a geometric shape by first calculating a factor representative of the influence of the geometric shape on the point; and determining a z coordinate for the point using the formula z=H((π/2)−arc tangent(factor)), where H is the height of z value assigned to the geometric shape.
 11. The method of claim 9, further comprising: calculating the height of a point in the virtual environment proximate to a geometric shape by first calculating a factor representative of the influence of the geometric shape on the point; and determining a z coordinate for the point using the formula z=H(arc tangent(factor)), where H is the height of z value assigned to the geometric shape.
 12. A signal bearing medium tangibly embodying a program of machine-readable instructions executable by a digital processing apparatus to perform an operation to generate a reproducible virtual environment, the operation comprising: receiving a seed value; initializing a pseudo-random number generator with the seed value; generating a sequence of pseudo-random numbers using the pseudo-random number generator previously initialized with the seed value, the sequence comprising at least one pseudo-random number; executing a series of software decisions to create a virtual environment wherein each software decision incorporates one or more pseudo-random numbers selected from the sequence of pseudo-random numbers in a predetermined order such that the virtual environment is reproducible from the same seed value.
 13. The signal bearing medium of claim 12, wherein the virtual environment comprises a spatial layout and wherein the operation further comprises placing terrain specific features into the spatial layout based on the sequence of pseudo-random numbers.
 14. The signal bearing medium of claim 12, wherein the virtual environment comprises a series of unanticipated events, wherein the unanticipated events are computer generated events dependent on the sequence of pseudo-random numbers.
 15. The signal bearing medium of claim 14, wherein the series of unanticipated events comprises meteorological changes in the virtual environment and wherein the attributes of meteorological changes are dependent on the sequence of pseudo-random numbers.
 16. The signal bearing medium of claim 12, wherein executing a series of software decisions to create a virtual environment comprises: generating a series of geometric shapes defined at least in part by the sequence of pseudo-random numbers; and positioning each geometric shape in a manner defined at least in part by the sequence of pseudo-random numbers.
 17. A system to generate a reproducible virtual environment in a computer software program, the system comprising: a computing device; a seed reception module configured to receive a seed value; a pseudo-random number generator initialized with the seed value and configured to generate a sequence of pseudo-random numbers, wherein the sequence comprises at least one pseudo-random number; an environment creation module configured to create a virtual environment defined at least in part by the sequence of pseudo-random numbers, wherein the virtual environment is reproducible based on the seed value.
 18. The system of claim 17, wherein the virtual environment is a spatial layout and the environment creation module is further configured to place terrain specific features into the spatial layout based on the sequence of pseudo-random numbers.
 19. The system of claim 17, wherein the virtual environment comprises a series of unanticipated events, wherein the unanticipated events are computer generated events dependent on the sequence of pseudo-random numbers.
 20. The system of claim 17, wherein the environment creation module is further configured to create the virtual environment by generating a series of geometric shapes having dimensions defined at least in part by the sequence of pseudo-random numbers; and positioning each geometric shape in a manner that is defined at least in part by the sequence of pseudo-random numbers. 